#==============================================================================
# ■ Game_CommonEvent
#------------------------------------------------------------------------------
# 　处理公共事件的类。包含执行并行事件的功能。
# 本类在 Game_Map 类 ($game_map) 的内部使用。
#==============================================================================

class Game_CommonEvent
  #--------------------------------------------------------------------------
  # ● 初始对像
  #     common_event_id : 公共事件 ID
  #--------------------------------------------------------------------------
  def initialize(common_event_id)
    @common_event_id = common_event_id
    @interpreter = nil
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 获取名称
  #--------------------------------------------------------------------------
  def name
    return $data_common_events[@common_event_id].name
  end
  #--------------------------------------------------------------------------
  # ● 获取目标
  #--------------------------------------------------------------------------
  def trigger
    return $data_common_events[@common_event_id].trigger
  end
  #--------------------------------------------------------------------------
  # ● 获取条件开关 ID
  #--------------------------------------------------------------------------
  def switch_id
    return $data_common_events[@common_event_id].switch_id
  end
  #--------------------------------------------------------------------------
  # ● 获取执行内容
  #--------------------------------------------------------------------------
  def list
    return $data_common_events[@common_event_id].list
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    # 建立必须的处理并行事件用的解释器
    if self.trigger == 2 and $game_switches[self.switch_id] == true
      if @interpreter == nil
        @interpreter = Interpreter.new
      end
    else
      @interpreter = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    # 并行处理有效的情况下
    if @interpreter != nil
      # 如果不是在执行中就设置
      unless @interpreter.running?
        @interpreter.setup(self.list, 0)
      end
      # 更新解释器
      @interpreter.update
    end
  end
end
